深入理解Java虚拟机(三)

1.垃圾收集器

Serial收集器,单线程收集器。优点是简单而高效(与其他收集器的单线程比),对于限定单个CPU的环境来说,Serial收集器由于没有线程交互的开销,专心做垃圾收集自然可以获得最高的单线程收集效率。Serial收集器对于运行在Client模式下的虚拟机来说是一个很好的选择。

             

虚拟机Client模式和Server模式

ParNew收集器,是Serial的多线程版本,是许多运行在Server模式下的虚拟机中首选的新生代收集器,除了Serial收集器外目前只有它能与CMS收集器配合工作。

                    


Parallel Scavenge收集器,是一个新生代收集器,复制算法,多线程并行。

        目的是达到一个可控制的吞吐量,吞吐量=运行用户代码时间/(运行用户代码时间+垃圾收集时间)

      

        自适应调节策略也是Parallel Scavenge收集器与ParNew收集器的一个重要区别。

      

     

      

Serial Old收集器,是Serial收集器的老年代版本,单线程收集器,使用“标记-整理”算法。主要意义也是在与给Client模式下 的虚拟机使用,如果在Server模式下,它的两大用途:一是在JDK1.5以及之前版本中与Parallel Scavenge收集器搭配使用,另一个是作为CMS收集器的后背预案。


Parallel Old收集器,是Parallel Scavenge收集器的老年代版本,多线程,“标记-整理”算法,在JDK1.6中才开始提供的。在注重吞吐量以及CPU资源敏感的场合,都可以优先考虑Parallel Scavenge加Parallel Old收集器。

CMS收集器,是一种以获取回收停顿时间为目标的收集器。目前很大一部分的Java应用集中在互联网站或者B/S系统的服务器端上,这类应用尤其重视服务器的响应速度,希望系统停顿的时间最短,以给用户带来较好的体验。CMS收集器就非常符合这类应用的需求。名字”Mark Sweep“上就看出是基于”标记-清除“的算法实现的。

            运作过程分为4个步骤,包括:初始标记、并发标记、重新标记、并发清除。

          

         

         

     优点是并发收集,低停顿。

     缺点:1.对CPU资源非常敏感,在并发阶段,它虽然不会导致用户线程停顿,但是会因为占用了一部分线程(或者说CPU资源)而导致应用程序变慢,总吞吐量会降低。

               2.无法处理浮动垃圾。

              

              

              3.“标记-清除”算法会产生大量的空间碎片。

              

G1收集器,是一款面向服务端应用的垃圾收集器,Hotspot开发团队赋予它的使命是未来可替换掉JDK1.5中发部的CMS收集器。

      特点:

             








  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值